package workflow;

import java.util.ArrayList;
import java.util.Iterator;

import docente.Docente;

public class CEnGeneracion extends CreadorPermiso
{

  public CEnGeneracion(Creador creador)
  {
    super(creador); 
  }
  
  @Override
  public void crearTemas(ArrayList<String> titulos, Docente autor){
    ArrayList<Tema> temas = new ArrayList<Tema>();
    for(String s : titulos)
    {
      temas.add(new Tema(s,autor));
    }
    getCreador().setTemas(temas);
  }
  
  public void enviarTemas()
  {
    ArrayList<Tema> temas = getCreador().getTemas();
    ListaCircular<Generador> colaboradores = getCreador().getColaboradores();
    colaboradores.crearIterador();
    notificarAll(colaboradores);
    for(Tema i : temas)
    {
      (colaboradores.siguiente()).recibirTema(i);
    }
    getCreador().deshabilitar(); //una vez que envia los temas queda deshabilitado hasta habilitarse para correcciones.
    getCreador().getWorkflow().liberar();
  }
  
  public void notificar(Generador unColaborador)
  {
    unColaborador.habilitarGeneracion();
  }

  //Metodo auxiliar
  private void notificarAll(ListaCircular<Generador> colaboradores)
  {
    for(int i =0; i<colaboradores.size();i++)
    {
      notificar(colaboradores.siguiente());
    }
  }
  
}